#include<stdio.h>
#include<string.h>
#include<unistd.h>

#define FILE_NAME "log.txt"

int main()
{
    //FILE* fp=fopen(FILE_NAME,"w");//以写的形式打开"log.txt"文件，不存在则在当前目录下创建一个
    
    //FILE* fp=fopen(FILE_NAME,"r");//以读的形式打开"log.txt"文件，不存在则报错
    //if(NULL==fp)
    //{
    //    perror("fopen fail");
    //    return 1;
    //}
    //char buffer[100];
    //while(fgets(buffer,sizeof(buffer)-1,fp)!=NULL)//从fp文件流中读取size个字节到buffer数组中去
    //{
    //   buffer[strlen(buffer)-1]=0;
    //    puts(buffer);
    //}
    //int cnt=5;
    //while(cnt--)
    //{
    //    fprintf(fp,"%s:%d\n","hello world",cnt);//将区域3的数据以区域2的格式，输入到fp这个文件流当中
    //}
    


    FILE* fp=fopen("bite","wb+");//注意这里要用wb二进制的形式打开文件
    if(fp==NULL)
    {
        perror("fopen fail");
        return 1;
    }
    fseek(fp,0,SEEK_SET);//函数功能是将文件指向以formwhere为基准，偏移offset个字节的偏移量，SEEK_SET指的是文件开头
    const char* data="Linux is so easy!\n";
    size_t ret = fwrite(data,1,strlen(data),fp);//将data的数据写进fp文件指针指向的文件中
    if(ret!=strlen(data))//该函数调用完后会返回实际写入文件的元素个数
    {
        perror("fwrite fail");
        return 1;
    }
    fseek(fp,0,SEEK_SET);//跳转读写位置到从文件开头开始偏移offset个字节的位置


    //将bite文件中的数据读出
    char buf[1024]={0};
    ret = fread(buf,1,1023,fp);

    if(ret == 0)
    {
        if(ferror(fp))
            printf("fread fail\n");//判断上一次IO操作是否正确
        if(feof(fp))
            printf("read end of file!\n");//判断是否读取到了文件末尾
    }
    printf("%s",buf);
    fclose(fp);

    return 0;
}
